package com.flydog.taskManager.dto;

import com.flydog.taskManager.common.vaildator.FlagValidator;
import com.flydog.taskManager.common.vaildator.PhaseTaskValidator;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;

import javax.validation.constraints.Future;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Calendar;


/**
 * @author Cao
 * @description 阶段性工作参数
 * @create 2021-05-10
 */
@Data
@PhaseTaskValidator
public class PhasedTaskParam {
    /**
     * 工作ID
     */
    private Long id;
    /**
     * 工作名称
     */
    @NotBlank(message = "工作名称不能为空")
    private String name;
    /**
     * 工作结束时间
     */
    @Future(message = "工作结束日期必需为未来的时间")
    private Calendar end;
    /**
     * 工作实体标签
     */
    private String tags;
    /**
     * 工作内容描述
     */
    @Size(max = 100, message = "工作描述长度不能超过100")
    private String description;
    /**
     * 工作重要性
     */
    @FlagValidator(value = {0, 1}, message = "工作重要性格式错误只能为 0 或 1")
    @NotNull (message = "工作重要性不能为空")
    private Integer importance;
    /**
     * 工作完成状态
     */
    @FlagValidator(value = {0, 1, 2}, message = "工作状态格式错误只能为0, 1, 2")
    private Integer processStatus;

    /**
     * 工作目标
     */
    @NotBlank(message = "工作目标不能为空")
    private String target;

    /**
     * 上级工作实体关联ID
     */
    private Long parentId;

    /**
     * 本实体所在层级
     */
    private Integer level;

    /**
     * 工作起始时间
     */
    @NotNull(message = "工作开始时间不能为空")
    private Calendar begin;
}
